#!/usr/bin/env bash
set -e

# SoX Resampler Library       Copyright (c) 2007-15 robs@users.sourceforge.net
# Licence for this file: LGPL v2.1                  See LICENCE for details.

# Exercises each example programme.



len=8
w=$(echo -e "`sox --ver |sed 's/.*SoX v//'` d\n14.4.1 k"|sort -Vr|head -1|sed 's/.* //')
#vg="valgrind --leak-check=full --show-reachable=yes"



# Exercise example 1:
$vg ./1-single-block



# Check that examples 2-4 can convert 96k<->44k1 and that results are same for each:
ir=96000
or=44100
for i in 1 2; do
  prev=""
  sox -r $ir -n 0.f32 synth $len sin 0+`expr $ir / 2`
  for f in `find . -type f -executable -name "[2-4]*"`; do
    $vg $f $ir $or < 0.f32 > $f.f32
    test x$prev != x && cmp $f.f32 $prev
    prev=$f.f32
  done
  or=96000
  ir=44100
done
rm *.f32



# Exercise VR making sure that varied internal stage reconfigurations occur:
variations=(slow-sweep fast-changing)
signals=(sine-wave saw-tooth-wave)
for n in 0 1 2 3; do
  signal=${signals[`expr $n % 2 || true`]}
  variation=${variations[`expr $n / 2 || true`]}
  $vg ./5-variable-rate $n | sox -tf32 -r44100 -c1 - -n spectrogram -z130 -hw$w -o v$n-$w.png -X 50 -c "variation:$variation signal:$signal"
  vg=""
done
